/**
 * 通用工具类
 * 
 */

/**
 * 获取表单字段前台ID
 * @param billId
 * @returns
 */
function GetFieldId(billId) {
    var fieldInfo = "";
    jQuery.ajax({
        url: "/ajaxOperation/GetFieldId.jsp",
        type: "post",
        async: false,
        data: {
            "method": "getFieldId",
            "formid": billId
        },
        success: function (data) {
            var info = eval("(" + data + ")");
            fieldInfo = info;
        },
        error: function () {
            window.top.Dialog.alert("系统发生错误，请联系管理员！");
        }
    })
    return fieldInfo;
}


/**
 * 判断数据是否为Null或者undefined或者为空字符串
 * @param value
 * @returns {boolean}
 * @constructor
 */
function valueIsNull(obj) {
    if (null == obj || "undefined" == typeof (obj)) {
        return true;
    }
    if (Array.isArray(obj)) {
        if (obj.length > 0) {
            return false;
        } else {
            return true;
        }
    } else {
        var result = trim(obj);
        if ("" == result) {
            return true;
        } else {
            return false;
        }
    }
}

/**
 * 获取当前日期和时间
 * 2020-11-12 20:22
 * @returns {string}
 * @constructor
 */
function GetNowDateAndTime() {
    var date = new Date();
    var str = '';
    str += d.getFullYear() + '-';
    str += d.getMonth() + 1 + '-';
    str += d.getDate() + ' ';
    str += d.getHours() + ':';
    str += d.getMinutes();
    return str;
}

//字符串比较
function compareStringValue(str1, str2) {
    if (str1 == str2) {
        return true;
    } else {
        return false;
    }
}

//整数比较
function compareIntValue(value1, value2) {
    var v1 = parseInt(value1);
    var v2 = parseInt(value2);
    if (v2 - v1 > 0) {
        return 1;
    } else if (v2 - v1 == 0) {
        return 0;
    } else {
        return -1;
    }
}

/**
 * 日期字符串格式化
 * yyyy-MM-dd hh:mm:ss
 * @param time
 * @returns {*}
 */
function FormateDate(time) {
    var data = new Date(time);
    var year = data.getFullYear();  //获取年
    var month = data.getMonth() + 1; //获取月
    var day = data.getDate(); //获取日
    var hours = data.getHours();
    var minutes = data.getMinutes();
    var seconds = data.getSeconds();
    time = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
    return time;
}

/**
 * 求日期差
 * @param date1
 * @param date2
 * @returns {number}
 * @constructor
 */
function DifferDate(date1, date2) {
    var num = date2.getTime() - date1.getTime();
    return num / 1000 / 60 / 60 / 24;
    这是换算天数
}

/**
 * 日期date转str
 * @param date
 * @returns {string}
 */
function DateToStr(date) {
    var year = date.getFullYear();//年
    var month = date.getMonth();//月
    var day = date.getDate();//日
    var hours = date.getHours();//时
    var min = date.getMinutes();//分
    var second = date.getSeconds();//秒
    var time = year + "-" + month + "-" + day + " " + hours + ":" + min + ":" + second;
    return time;
}

/**
 * 日期str转date
 * @param str
 * @returns {Date}
 * @constructor
 */
function StrToDate(str) {
    var date = new Date(str);
    return date;
}

/**
 * 字符日期 增加天数得到日期
 * @param dataStr XXXX-XX-XX
 * @param dayCount 增加的天数
 * @returns {string}
 */
function dateAddDays(dataStr, dayCount) {
    var strdate = dataStr;//日期字符串
    var isdate = new Date(strdate.replace(/-/g, "/"));
    isdate = new Date((isdate / 1000 + (86400 * dayCount)) * 1000);//日期+1天
    var strMonth = isdate.getMonth() + 1;
    var strDate = isdate.getDate();
    var strYear = isdate.getFullYear();
    if (strMonth >= 1 && strMonth <= 9) {
        strMonth = "0" + strMonth;
    }
    if (strDate >= 1 && strDate <= 9) {
        strDate = "0" + strDate;
    }
    var pdate = strYear + "-" + strMonth + "-" + strDate;//把日期转换成字符串
    return pdate;
}

/**
 * 获取cookie
 * @param name
 * @returns {*}
 */
function GetCookie(name) {
    var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
    if (arr = document.cookie.match(reg))
        return unescape(arr[2]);
    else
        return null;
}

/**
 * jQuery json字符串转json对象
 * @param jsonStr1 "{\"name\":\"盖伦\"}"或者'{"name":"不祥之刃"}'
 * @constructor
 */
function StrToJson(jsonStr) {
    nu
    var jsonObject = jQuery.parseJSON(jsonStr);
    return jsonObject;
}

/**
 * json对象转数组
 * @param jsonObject {maxAmount:'10000',uploadAmount:'20000'}
 * @returns {Array}
 * @constructor
 */
function JsonToArr(jsonObject) {
    var formParamsArr = [];
    for (var i in jsonObject) {
        var o = {};
        o[i] = jsonObject[i];
        formParamsArr.push(o)
    }
    return formParamsArr;
}

//去除字符串两端空格
function trim(str) {
    return str.replace(/(^\s*)|(\s*$)/g, "");
}

//去除换行
function ClearBr(key) {
    key = key.replace(/<\/?.+>/g, "");
    key = key.replace(/[\r\n]/g, "");
    return key;
}

//判断浏览器类型
function myBrowser() {
    var userAgent = navigator.userAgent;//取得浏览IQ的userAgent字符串
    var isOpera = userAgent.indexOf("Opera") > -1;
    if (isOpera) {//判断是否Opera浏览器
        return "Opera";
    }
    if (userAgent.indexOf("Firefox") > -1) {//判断是否Firefox浏览器
        return "Firefox";
    }
    if (userAgent.indexOf("Chrome") > -1) {//判断是否Chrome浏览器
        return "Chrome";
    }
    if (userAgent.indexOf("Safari") > -1) {//判断是否Safari浏览器
        return "Safari";
    }
    if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {//判断是否IE浏览器
        return "IE";
    }
}

/**
 * 通过js改变字段的必填属性，以及必填时红色感叹号的交互
 * @param fieldid 标签ID，明细表加上index
 * @param sign (boolean) true 必填 false 取消必填
 * @param viewtype
 */
function changeMustFillStyle(fieldid, sign, viewtype) {
    var needCheck = $('input[name=needcheck]');//表单提交时的校验依据
    var needCheckArr = needCheck.val().split(",");
    var field = $("#" + fieldid);//目标字段
    var spanid = fieldid + "span";//红色感叹号所在span标签
    var isBrower = $(field.parents('td')[0]).find('.e8_browserSpan').length > 0;//判断是否浏览字段
    if (isBrower) {
        spanid += "img";
    }
    var span = $("#" + spanid);
    field.attr("mustFill", sign);//把是否必填的标志放在字段上
    if (sign) {//置为必填
        if (!field.val()) {//若字段值为空
            span.html('<img src="/images/BacoError_wev8.gif" align="absmiddle">');//显示红色小感叹号
        }
        needCheckArr.push(fieldid);
        needCheck.val(needCheckArr.join(","));
    } else {//取消必填
        span.html('');//清除红色小感叹号
        for (var i = 0; i < needCheckArr.length; i++) {//移除校验
            if (needCheckArr[i] == fieldid) {
                needCheckArr.splice(i, 1);
                i--;
            }
        }
        needCheck.val(needCheckArr.join(","));
    }
    //以下代码为了设置必填后，红色感叹号的交互
    var bindup = field.attr("bingup");//标记，标识绑定过交互事件
    if (!bindup && sign) {//当设置为了必填且还未绑定交互时
        if (isBrower) {//浏览字段
            field.bingPropertyChange(function (dom) {
                if (!$(dom).attr("mustFill")) {//字段此时非必填，不管
                    return;
                }
                if (dom.value) {//否则有值去除感叹号，没值显示感叹号
                    span.html('');
                } else {
                    span.html('<img src="/images/BacoError_wev8.gif" align="absmiddle">')
                }
            })
        } else {//其他字段默认通过Blur事件控制
            field.blur(function () {
                if (!$(this).attr("mustFill")) {//字段此时非必填，不管
                    return;
                }
                if ($(this).val()) {//否则有值去除感叹号，没值显示感叹号
                    span.html('');
                } else {
                    span.html('<img src="/images/BacoError_wev8.gif" align="absmiddle">');
                }
            });
        }
        field.attr("bindup", true);//加上标记，防止重复绑定交互事件
    }
}

/**
 * 获取URL参数列表
 * @returns {Array}
 */
function GetQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]);
    return null;
}

/**
 * 动态获取流程的requestid
 * @returns {*}
 */
function getRequestIdForWorkFlow() {
    var id = getUrlVars()["requestid"];
    if (valueIsNull(id)) {
        return null;
    } else {
        return id;
    }
}